package com.cnap.service;

import com.cnap.db.entity.ProgressPO;
import com.cnap.model.progress.ProgressVO;
import com.cnap.model.progress.ProgressVOForSplit;

/**
 * 进度条服务类
 *
 * @author xc
 **/
public interface ProgressService {

    /**
     * 根据id查询进度
     *
     * @param id id
     * @return 结果
     */
    ProgressVO getProgressByApplicationId(String id);

    /**
     * 根据id查询进度
     *
     * @param id id
     * @return 结果
     */
    ProgressPO getProgressPOByApplicationId(String id);

    /**
     * 根据id查询分解微服务进度
     *
     * @param id id
     * @return 结果
     */
    ProgressVOForSplit getProgressForSplitByApplicationId(String id);

    /**
     * 根据id删除进度信息
     *
     * @param id id
     */
    void deleteProgressByApplicationId(String id);

    /**
     * 保存进度
     *
     * @param progressPO 进度
     * @return 结果
     */
    boolean initProgress(ProgressPO progressPO);

    /**
     * 更新进度
     *
     * @param progressPO 进度信息
     * @return 结果
     */
    boolean updateProgress(ProgressPO progressPO);

    /**
     * 更新进度
     *
     * @param id      id
     * @param percent 进度
     * @return 结果
     */
    boolean updateProgressPercent(String id, int percent);

    /**
     * 更新异常
     *
     * @param id        id
     * @param exception 异常
     * @return 结果
     */
    boolean updateProgressException(String id, String exception);

    /**
     * 查询进度
     *
     * @param id id
     * @return 进度
     */
    int getPercentByApplicationId(String id);

    /**
     * 计算分片阶段的进度，当前进度加一个分片
     *
     * @param applicationId 应用id
     */
    void calPercentWithOnePatchAndUpdate(String applicationId);
}
